Реализация gRPC-метода LoginUser в auth-service

Проверка хэша пароля в PostgreSQL, генерация TokenPair с инъекцией Claims и фиксация сессии.

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: auth-service (Backend контура авторизации).
  • Категория: Бэкенд.
  • Контракт методов: gRPC rpc LoginUser(LoginRequest) returns (LoginResponse);
  • Спецификация контракта: См. Раздел: Protobuf Контракт: LoginUser
  • Статус: Готово к реализации

  • Предварительные условия (Prerequisites):

    1. Убедиться, что gRPC-сообщение зафиксировано в репозитории контрактов строго по Спецификации Protobuf и стабы обновлены.
  • Инструкция по шагам:

    1. На Шаге 3 (Прием и валидация): Реализовать gRPC-хэндлер LoginUser. Если поля email или password отсутствуют или переданы в невалидном формате, возвращать ошибку gRPC Status: INVALID_ARGUMENT.
    2. На Шаге 4-5 (Поиск в БД): Сделать запрос к СУБД PostgreSQL (DB_AUTH): SELECT id, password_hash FROM users WHERE email = :email LIMIT 1;. Если запись отсутствует, прерывать выполнение и отдавать gRPC Status: NOT_FOUND.
    3. На Шаге 5-продолжение (Крипто-проверка): В памяти сервиса выполнить валидацию сырого пароля против хэша (Bcrypt/Argon2). При несовпадении генерировать ошибку gRPC Status: UNAUTHENTICATED (неверный пароль).
    4. На Шаге 6 (Генерация JWT и инъекция Claims): Инициировать метод GenerateTokenPair. Внедрить в структуру Payload JWT токена обязательные бизнес-параметры пользователя: user_id, home_group_id и account_type согласно разделу JWT Claims Specification.
    5. На Шаге 7 (Сохранение сессии): Записать хэш созданного refresh_token в таблицу user_sessions. После успешного коммита транзакции сформировать и вернуть шлюзу структуру LoginResponse.